home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.4 Development Libraries / SGI IRIX 6.4 Development Libraries.iso / docs6.4 / relnotes / gl_dev / ch6.z / ch6
Encoding:
Text File  |  1997-09-04  |  33.0 KB  |  793 lines

  1.  
  2.  
  3.  
  4.                                   - 1 -
  5.  
  6.  
  7.  
  8.        6.  _O_p_e_n_G_L
  9.  
  10.        OpenGL is supported on all graphics adaptors. Here is the
  11.        complete list:
  12.  
  13.          Indy - XL 8/24 bits
  14.          Indigo - Starter, XS, XS24, XZ, Elan
  15.          IndigoII - XL, XZ, Extreme, Solid Impact, Maximum Impact,
  16.                     High Impact
  17.          Crimson - Starter, XS, XS24, Elan, Extreme, VGX, VGXT,
  18.                    RealityEngine
  19.          Onyx - InfiniteReality, RealityEngine2, RealityEngine, VTX
  20.          Onyx2 - InfiniteReality, Reality
  21.          OCTANE - OCTANE MXI, OCTANE SSI and OCTANE SI
  22.  
  23.        These implementations pass Level 0 of the conformance tests
  24.        (i.e., the "mustpass" test suite).  Also, all the adaptors
  25.        except VGX, and VGXT pass most of the balance of the
  26.        conformance tests. The VGX, and VGXT use a rendering
  27.        pipeline that is more like IrisGL and therefore fail most of
  28.        the lighting conformance tests in addition to other tests.
  29.        (Please see the conformance reports for details.)
  30.  
  31.        6.1  _D_o_c_u_m_e_n_t_a_t_i_o_n
  32.  
  33.        The following documentation is available for OpenGL:
  34.  
  35.           +o The _O_p_e_n_G_L _P_r_o_g_r_a_m_m_i_n_g _G_u_i_d_e (Addison-Wesley, 1993) is
  36.             a comprehensive guide to programming with OpenGL.
  37.  
  38.           +o The _O_p_e_n_G_L _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l (Addison-Wesley, 1992)
  39.             contains an overview of OpenGL and man pages for all
  40.             OpenGL, GLX and GLU functions.
  41.  
  42.           +o _O_p_e_n_G_L _o_n _S_i_l_i_c_o_n _G_r_a_p_h_i_c_s _S_y_s_t_e_m_s provides information
  43.             that is essential for writing OpenGL applications in
  44.             the X11 and IRIS IM environments, describes major SGI
  45.             extensions to OpenGL, and gives advice for tuning
  46.             OpenGL application performance.
  47.  
  48.           +o _T_h_e _O_p_e_n_G_L _P_o_r_t_i_n_g _G_u_i_d_e describes how to port programs
  49.             that were written for IRIS GL.  (Some of this
  50.             information has been superseded by the material in
  51.             _O_p_e_n_G_L _o_n _S_i_l_i_c_o_n _G_r_a_p_h_i_c_s _S_y_s_t_e_m_s.)
  52.  
  53.           +o The _I_R_I_S _P_r_o_g_r_a_m_m_i_n_g _N_o_t_e_s include documentation for
  54.             X11, GL/GLX, Font Manager and mixed model programming
  55.             in IRIS GL.
  56.  
  57.        The IRIS Development Option documentation includes online
  58.        copies of _T_h_e _O_p_e_n_G_L _P_o_r_t_i_n_g _G_u_i_d_e, _O_p_e_n_G_L _o_n _S_i_l_i_c_o_n
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.                                   - 2 -
  71.  
  72.  
  73.  
  74.        _G_r_a_p_h_i_c_s _S_y_s_t_e_m_s, the _I_R_I_S _P_r_o_g_r_a_m_m_i_n_g _N_o_t_e_s, the _O_p_e_n_G_L
  75.        _P_r_o_g_r_a_m_m_i_n_g _G_u_i_d_e, the _O_p_e_n_G_L _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l and reference
  76.        pages (commonly known as ``man pages'') for all OpenGL, GLX
  77.        and GLU functions.  It includes a hardcopy of the _O_p_e_n_G_L
  78.        _P_r_o_g_r_a_m_m_i_n_g _G_u_i_d_e.  You may also order a hardcopy of the
  79.        porting guide (part number M4-OGLPort-5.1) and the _O_p_e_n_G_L
  80.        _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l (part number M4-OGLMAN-1.0).
  81.  
  82.        The reference pages for OpenGL commands have been updated
  83.        with the latest information on machine-dependencies for each
  84.        of the supported graphics adaptors.  This includes
  85.        performance tuning hints as well as known bugs and
  86.        functionality subsetting warnings.
  87.  
  88.        If you're porting from IRIS GL to OpenGL, the best approach
  89.        is to convert your program to a mixed-model program first
  90.        (see the _I_R_I_S _P_r_o_g_r_a_m_m_i_n_g _N_o_t_e_s) and then consult _O_p_e_n_G_L _o_n
  91.        _S_i_l_i_c_o_n _G_r_a_p_h_i_c_s _S_y_s_t_e_m_s followed by _T_h_e _O_p_e_n_G_L _P_o_r_t_i_n_g
  92.        _G_u_i_d_e for more information.
  93.  
  94.        6.2  _E_x_t_e_n_s_i_o_n_s
  95.  
  96.        The following OpenGL extensions are available in IRIX 6.2.
  97.        For more information, please consult the _g_l_i_n_t_r_o reference
  98.        page.
  99.  
  100.           +o _E_X_T__a_b_g_r extends the list of host-memory color formats.
  101.             Specifically, it provides a reverse-order alternative
  102.             to image format RGBA. The ABGR component order matches
  103.             the cpack Iris GL format on big-endian machines.
  104.  
  105.           +o _E_X_T__b_l_e_n_d__c_o_l_o_r allows a constant to be used as a
  106.             factor in the blending equation.  A typical use is to
  107.             blend two RGB images.  Without the constant blend
  108.             factor, one image must have an alpha channel with each
  109.             pixel set to the desired blend factor.
  110.  
  111.           +o _E_X_T__b_l_e_n_d__l_o_g_i_c__o_p defines an additional blending
  112.             equation for _g_l_B_l_e_n_d_E_q_u_a_t_i_o_n_E_X_T.  This equation is a
  113.             simple logical combination of the source and
  114.             destination colors.
  115.  
  116.           +o _E_X_T__b_l_e_n_d__m_i_n_m_a_x allows the blend equation to be
  117.             changed using _g_l_B_l_e_n_d_E_q_u_a_t_i_o_n_E_X_T and introduces two new
  118.             blend equations, one to produce the minimum color
  119.             components of the source and destination colors and one
  120.             to produce the maximum.
  121.  
  122.           +o _E_X_T__b_l_e_n_d__s_u_b_t_r_a_c_t defines two additional blending
  123.             equations for use with _g_l_B_l_e_n_d_E_q_u_a_t_i_o_n_E_X_T.  These new
  124.             equations are similar to the default blending equation,
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.                                   - 3 -
  137.  
  138.  
  139.  
  140.             but produce the difference of its terms, rather than
  141.             the sum.  Image differences are useful in many image
  142.             processing applications.
  143.  
  144.           +o _S_G_I_X__c_l_i_p_m_a_p introduces new filtering and memory
  145.             management techniques for handling extraordinarily
  146.             large textures.  Clipmaps provide many of the features
  147.             of mipmaps, while using a small fraction of the texture
  148.             memory required for mipmaps of equivalent size.  They
  149.             are especially useful for rendering terrain and roaming
  150.             over large images.  Clipmaps are supported on
  151.             InfiniteReality systems.
  152.  
  153.           +o _S_G_I__c_o_l_o_r__m_a_t_r_i_x adds a 4x4 matrix stack and matrix
  154.             multiplication to the pixel transfer path.  The color
  155.             matrix operates on RGBA pixel components.  It can be
  156.             used to reorder or duplicate color components, and to
  157.             implement simple color-space conversions.
  158.  
  159.           +o _S_G_I__c_o_l_o_r__t_a_b_l_e defines a new RGBA-format color lookup
  160.             table mechanism, and several new lookup tables in the
  161.             OpenGL pixel path.  The new lookup tables are treated
  162.             as one-dimensional images with internal formats, like
  163.             texture images and convolution filter images.  This
  164.             allows the tables to operate on a subset of the
  165.             components of passing pixels.  (For example, a table
  166.             with internal format GL_ALPHA modifies only the A
  167.             component of each passing pixel, leaving the R, G, and
  168.             B components untouched.)  A small subset of this
  169.             extension is supported on RealityEngine,
  170.             RealityEngine2, and VTX systems; because of this, the
  171.             extension is not listed in the extensions string
  172.             returned by _g_l_G_e_t_S_t_r_i_n_g.  The full extension is
  173.             supported on all other systems.
  174.  
  175.           +o _E_X_T__c_o_n_v_o_l_u_t_i_o_n adds 1- or 2-dimensional convolution
  176.             operations to the pixel transfer process.  Pixel
  177.             drawing, reading, and copying, as well as texture image
  178.             definition, are candidates for convolution.  The
  179.             convolution kernels are themselves treated as 1- and
  180.             2-dimensional images, which can be loaded from
  181.             application memory or from the framebuffer.  A subset
  182.             of this extension is supported on RealityEngine,
  183.             RealityEngine2, and VTX systems; the full extension is
  184.             supported on all other systems.
  185.  
  186.           +o _E_X_T__c_o_p_y__t_e_x_t_u_r_e provides the ability to copy pixels
  187.             directly from the framebuffer into texture memory.  At
  188.             present only a small subset of this extension has been
  189.             implemented on RealityEngine, RealityEngine2, and VTX
  190.             systems, so the extension name is not listed in the
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.                                   - 4 -
  203.  
  204.  
  205.  
  206.             extensions string returned by _g_l_G_e_t_S_t_r_i_n_g.  It is fully
  207.             supported on all other systems.
  208.  
  209.           +o _S_G_I_S__d_e_t_a_i_l__t_e_x_t_u_r_e introduces texture magnification
  210.             filters that blend between the level 0 image and a
  211.             separately defined "detail" image. This detail blending
  212.             can be enabled for all color channels, for the alpha
  213.             channel only, or for the red, green, and blue channels
  214.             only. It is available only for 2D textures.  Supported
  215.             on RealityEngine, RealityEngine2, and VTX systems and
  216.             on InfiniteReality systems.
  217.  
  218.           +o _S_G_I_S__f_o_g__f_u_n_c Standard OpenGL defines three fog modes:
  219.             GL_LINEAR, GL_EXP (exponential), and GL_EXP2
  220.             (exponential squared).  Visual simulation systems can
  221.             benefit from more sophisticated atmospheric effects.
  222.             This extension provides the ability to define a custom
  223.             fog blending function by specifying a set of control
  224.             points that will be interpolated by the function.
  225.             Supported on InfiniteReality systems.
  226.  
  227.           +o _S_G_I_X__f_o_g__o_f_f_s_e_t In highly-fogged environments, emissive
  228.             objects (like simulated automobile headlights or runway
  229.             landing lights) can appear unrealistically dim.  This
  230.             extension brightens fogged objects by offsetting the Z
  231.             value used in fog computations.  Supported on
  232.             InfiniteReality systems.
  233.  
  234.           +o _E_X_T__h_i_s_t_o_g_r_a_m defines pixel operations that count
  235.             occurrences of specific color component values
  236.             (histogram) and track the minimum and maximum color
  237.             component values (minmax).  An optional mode allows
  238.             pixel data to be discarded after the histogram and/or
  239.             minmax operations are completed.  Otherwise the pixel
  240.             data continue on to the next operation unaffected.
  241.  
  242.           +o _S_G_I_X__i_n_t_e_r_l_a_c_e modifies the behavior of _g_l_D_r_a_w_P_i_x_e_l_s,
  243.             _g_l_C_o_p_y_P_i_x_e_l_s, _g_l_T_e_x_I_m_a_g_e_2_D, _g_l_T_e_x_S_u_b_I_m_a_g_e_2_D_E_X_T,
  244.             _g_l_C_o_p_y_T_e_x_I_m_a_g_e_2_D_E_X_T and _g_l_C_o_p_y_T_e_x_S_u_b_I_m_a_g_e_2_D_E_X_T, such
  245.             that when GL_INTERLACE_SGIX is enabled the source image
  246.             is considered to be a field of an "interlaced" frame.
  247.             This is particularly useful for assembling consecutive
  248.             interlaced video format fields to into a complete frame
  249.             in either the framebuffer or in texture memory.
  250.             Supported on RealityEngine, RealityEngine2, and VTX
  251.             systems and on InfiniteReality systems.
  252.  
  253.           +o _S_G_I_S__m_u_l_t_i_s_a_m_p_l_e provides a mechanism to antialias all
  254.             primitives.  The technique is to sample all primitives
  255.             multiple times at different locations within each pixel
  256.             (rather than just the pixel center). The color sample
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.                                   - 5 -
  269.  
  270.  
  271.  
  272.             values are resolved to a single, displayable color each
  273.             time a pixel is updated, so the antialiasing appears to
  274.             be automatic at the application level.  Supported on
  275.             RealityEngine, RealityEngine2, and VTX systems and on
  276.             InfiniteReality systems.
  277.  
  278.           +o _E_X_T__p_a_c_k_e_d__p_i_x_e_l_s provides support for packed pixels in
  279.             host memory.  A packed pixel is represented entirely by
  280.             one unsigned byte, one unsigned short, or one unsigned
  281.             integer. The fields with the packed pixel are not
  282.             proper machine types, but the pixel as a whole is. Thus
  283.             the pixel storage modes, and their unpacking
  284.             counterparts, all work correctly with packed pixels.
  285.             This extension is not supported on RealityEngine,
  286.             RealityEngine2, and VTX systems.
  287.  
  288.           +o _E_X_T__p_o_l_y_g_o_n__o_f_f_s_e_t allows depth values of fragments to
  289.             be displaced so that lines (or points) and polygons
  290.             that lie in the same plane can be rendered without
  291.             interaction -- the lines are rendered either completely
  292.             in front of or behind the polygons (depending on the
  293.             sign of the offset factor).  It also allows multiple
  294.             coplanar polygons to be rendered without interaction,
  295.             if different offset factors are used for each polygon.
  296.  
  297.           +o _S_G_I_X__p_o_l_y_n_o_m_i_a_l__f_f_d alters vertex coordinates, texture
  298.             coordinates, and normals according to user-specified
  299.             trivariate polynomials.  The resulting deformations are
  300.             useful in modelling and character animation.  This
  301.             extension is supported on InfiniteReality systems.
  302.  
  303.           +o _S_G_I_X__r_e_f_e_r_e_n_c_e__p_l_a_n_e allows a group of coplanar
  304.             primitives to be rendered without depth-buffering
  305.             artifacts.  This is accomplished by generating the
  306.             depth values for all the primitives from a single
  307.             ``reference plane'' rather than from the primitives
  308.             themselves.  This ensures that all the primitives in
  309.             the group have exactly the same depth value at any
  310.             given sample point, no matter what imprecision may
  311.             exist in the original specifications of the primitives
  312.             or in the GL's coordinate transformation process.
  313.             _S_G_I_X__r_e_f_e_r_e_n_c_e__p_l_a_n_e is useful for generating hidden-
  314.             line drawings, for applying decals to polygons, and for
  315.             multipass rendering techniques.  Supported on
  316.             InfiniteReality systems.
  317.  
  318.           +o _S_G_I_X__s_h_a_d_o_w provides support for rendering shadows
  319.             using shadow maps.  First the application renders the
  320.             scene from the point of view of the light source, and
  321.             copies the resulting depth buffer to a texture with
  322.             internal format GL_DEPTH_COMPONENT.  Next the
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.                                   - 6 -
  335.  
  336.  
  337.  
  338.             application renders the scene from the normal
  339.             viewpoint.  Then the application enables the texture
  340.             parameter GL_TEXTURE_COMPARE_SGIX, sets the texture
  341.             comparison operator and texture matrix appropriately,
  342.             and re-renders the scene with 2D texturing enabled.
  343.             During this final rendering pass, the depth value
  344.             generated by iterating the _r texture coordinate is
  345.             compared with the shadow map stored in texture memory,
  346.             and the results of the comparison indicate whether the
  347.             pixel being textured is in shadow.  The filtered result
  348.             of the shadow comparisons can be blended with the pixel
  349.             to darken it.  Supported on InfiniteReality systems.
  350.  
  351.           +o _S_G_I_X__s_h_a_d_o_w__a_m_b_i_e_n_t controls the filtered texture value
  352.             generated in shadowed regions (see _S_G_I_X__s_h_a_d_o_w).  In
  353.             effect, this changes the ambient lighting in shadows.
  354.             Supported on InfiniteReality systems.
  355.  
  356.           +o _S_G_I_S__s_h_a_r_p_e_n__t_e_x_t_u_r_e introduces texture magnification
  357.             filters that sharpen the resulting image by
  358.             extrapolating from the level 1 image to the level 0
  359.             image.  Sharpening can be enabled for all color
  360.             channels, for the alpha channel only, or for the red,
  361.             green, and blue channels only.  Supported on
  362.             RealityEngine, RealityEngine2, and VTX systems and on
  363.             InfiniteReality systems.
  364.  
  365.           +o _E_X_T__s_u_b_t_e_x_t_u_r_e allows a contiguous portion of an
  366.             already-existing texture image to be redefined without
  367.             affecting the remaining portion of the image or any of
  368.             the other state that describes the texture. There are
  369.             three new calls: _g_l_T_e_x_S_u_b_I_m_a_g_e_1_D_E_X_T,
  370.             _g_l_T_e_x_S_u_b_I_m_a_g_e_2_D_E_X_T, and _g_l_T_e_x_S_u_b_I_m_a_g_e_3_D_E_X_T.  A subset
  371.             of this extension is available on RealityEngine,
  372.             RealityEngine2, and VTX systems, and the full extension
  373.             is available on all other systems.
  374.  
  375.           +o _E_X_T__t_e_x_t_u_r_e provides support for a variety of
  376.             resolutions of color components in texture images. That
  377.             is, instead of treating a retained image as having 1,
  378.             2, 3, or 4 components, it is treated as though it had a
  379.             specific format, such as GL_LUMINANCE_ALPHA, or just
  380.             GL_ALPHA.  This extension also defines a robust method
  381.             for applications to determine what combinations of
  382.             texture dimensions and resolutions are supported by an
  383.             implementation and it introduces a new texture
  384.             environment: GL_REPLACE_EXT.
  385.  
  386.           +o _E_X_T__t_e_x_t_u_r_e_3_D supports 3-dimensional texture mapping.
  387.             It also defines the in-memory formats for 3D images,
  388.             and adds pixel storage modes to support them.
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.                                   - 7 -
  401.  
  402.  
  403.  
  404.           +o _S_G_I_X__t_e_x_t_u_r_e__a_d_d__e_n_v defines a new texture environment
  405.             function which scales the texture value by the constant
  406.             texture color and then adds a bias color.  Supported
  407.             only on InfiniteReality systems.
  408.  
  409.           +o _S_G_I__t_e_x_t_u_r_e__c_o_l_o_r__t_a_b_l_e adds a color lookup table to
  410.             the texture mapping process.
  411.  
  412.           +o _S_G_I_S__t_e_x_t_u_r_e__e_d_g_e__c_l_a_m_p The GL normally clamps texture
  413.             coordinates to the range [0,1].  This can cause the
  414.             texture sampling filter to straddle the edge of the
  415.             texture image, taking half its sample values from
  416.             within the texture image, and the other half from the
  417.             texture border.  Sometimes this is undesirable.
  418.             _S_G_I_S__t_e_x_t_u_r_e__e_d_g_e__c_l_a_m_p defines a new texture clamping
  419.             method that ensures all sample values fall within the
  420.             texture image.
  421.  
  422.           +o _S_G_I_S__t_e_x_t_u_r_e__f_i_l_t_e_r_4 allows 1D and 2D textures to be
  423.             filtered using an application-defined symmetric and
  424.             separable filter with four samples per dimension.  In
  425.             the most common 2D case, the filter is bicubic.  This
  426.             filtering can yield better-quality images than
  427.             mipmapping, and is often used in image processing
  428.             applications.  Supported on InfiniteReality systems.
  429.  
  430.           +o _S_G_I_S__t_e_x_t_u_r_e__l_o_d provides mechanisms that reduce the
  431.             number of mipmap levels required for mipmapped
  432.             texturing.  This allows a large texture to be loaded
  433.             and used initially at low resolution, and to increase
  434.             the resolution gradually as time passes or as more
  435.             mipmap levels become available.  Supported on
  436.             InfiniteReality systems.
  437.  
  438.           +o _E_X_T__t_e_x_t_u_r_e__o_b_j_e_c_t supports named texture objects whose
  439.             contents and parameters may be changed after they are
  440.             defined.  (Contrast this with textures in display
  441.             lists, which cannot be modified after the display lists
  442.             are created.)  For machines with special texture
  443.             memories, _E_X_T__t_e_x_t_u_r_e__o_b_j_e_c_t also provides simple
  444.             texture memory management.
  445.  
  446.           +o _S_G_I_X__t_e_x_t_u_r_e__s_c_a_l_e__b_i_a_s adds scale, bias, and clamp
  447.             operations to the texture pipeline.  These operations
  448.             are applied to the filtered result of a texture lookup,
  449.             before that result is used in the texture environment
  450.             equations and before the texture color lookup table of
  451.             _S_G_I__t_e_x_t_u_r_e__c_o_l_o_r__t_a_b_l_e.
  452.  
  453.           +o _E_X_T__v_e_r_t_e_x__a_r_r_a_y adds the ability to specify multiple
  454.             geometric primitives with very few subroutine calls.
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.                                   - 8 -
  467.  
  468.  
  469.  
  470.             Instead of calling an OpenGL procedure to pass each
  471.             individual vertex, normal, or color, separate arrays of
  472.             vertexes, normals, and colors are prespecified, and are
  473.             used to define a sequence of primitives (all of the
  474.             same type) when a single call is made to
  475.             _g_l_D_r_a_w_A_r_r_a_y_s_E_X_T. A stride mechanism is provided so that
  476.             an application can choose to keep all vertex data
  477.             staggered in a single array, or sparsely in separate
  478.             arrays, but single-array storage generally will provide
  479.             better performance.  This extension also supports the
  480.             rendering of individual array elements, each specified
  481.             as an index into the enabled arrays.
  482.  
  483.        The following GLX extensions are available in 6.2.  For
  484.        detailed information, please consult the _g_l_x_i_n_t_r_o reference
  485.        page.
  486.  
  487.           +o _S_G_I_X__f_b_c_o_n_f_i_g introduces a new way to describe the
  488.             capabilities of a GLX drawable (i.e., to describe the
  489.             depth of color buffer components and the type and size
  490.             of ancillary buffers), removes the "similarity"
  491.             requirement when making a context current to a
  492.             drawable, and supports RGBA rendering to one- and two-
  493.             component Windows and GLX Pixmaps.
  494.  
  495.           +o _E_X_T__i_m_p_o_r_t__c_o_n_t_e_x_t allows multiple X clients to share
  496.             an indirect rendering context. Also, two convenience
  497.             routines are added: one to get the display for the
  498.             current context and one to retrieve the attributes that
  499.             a context was created with.
  500.  
  501.           +o _S_G_I__m_a_k_e__c_u_r_r_e_n_t__r_e_a_d allows OpenGL pixel operations to
  502.             read pixel data from the buffers of one drawable and
  503.             draw into the buffers of another.  For example, pixels
  504.             can be copied from one window into another, or from a
  505.             GLXPbuffer into a window.
  506.  
  507.           +o _S_G_I_S__m_u_l_t_i_s_a_m_p_l_e provides a mechanism to antialias all
  508.             primitives.  In order to support multisampling both GLX
  509.             and OpenGL had to be extended. The GLX portion of the
  510.             extension includes new visual attributes which can be
  511.             specified when calling _g_l_X_C_h_o_o_s_e_V_i_s_u_a_l and
  512.             _g_l_X_G_e_t_C_o_n_f_i_g.  This extension is supported on
  513.             RealityEngine, RealityEngine2, and VTX systems, and on
  514.             InfiniteReality systems.
  515.  
  516.           +o _S_G_I_X__p_b_u_f_f_e_r defines GLX pixel buffers, which are
  517.             additional non-visible rendering buffers for an OpenGL
  518.             renderer.  GLX pixel buffers are typically allocated in
  519.             non-visible frame buffer memory.  They are intended to
  520.             be "static" resources, in that a program will typically
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.                                   - 9 -
  533.  
  534.  
  535.  
  536.             allocate them only once, rather than as a part of its
  537.             rendering loop. Also the frame buffer resources that
  538.             are associated with a GLX pixel buffer are static, and
  539.             are deallocated only when the GLXPbuffer is destroyed,
  540.             or, in the case of a _u_n_p_r_e_s_e_r_v_e_d GLX pixel buffer, as a
  541.             result of X server activity that changes its frame
  542.             buffer requirements.
  543.  
  544.           +o _S_G_I__s_w_a_p__c_o_n_t_r_o_l provides new parameters that modify
  545.             the semantics of _g_l_S_w_a_p_B_u_f_f_e_r_s. With this extension an
  546.             application can specify a minimum periodicity for color
  547.             buffer swaps, measured in display retrace periods.
  548.  
  549.           +o _S_G_I_X__v_i_d_e_o__r_e_s_i_z_e allows the frame buffer to be resized
  550.             to the output resolution of the video channel when
  551.             _S_w_a_p_B_u_f_f_e_r_s is called for the window that is bound to
  552.             the video channel.  This extension is supported only on
  553.             InfiniteReality systems.
  554.  
  555.           +o _S_G_I_X__v_i_d_e_o__s_o_u_r_c_e allows pixel data to be sourced from
  556.             a video input stream.  It defines a new type of
  557.             drawable, GLXVideoSourceSGIX, that represents the drain
  558.             node of a Video Library (VL) path.  A
  559.             GLXVideoSourceSGIX may be passed as a parameter to
  560.             _g_l_X_M_a_k_e_C_u_r_r_e_n_t_R_e_a_d_S_G_I to indicate that pixel data
  561.             should be read from the specified video source instead
  562.             of from the framebuffer.
  563.  
  564.           +o _S_G_I__v_i_d_e_o__s_y_n_c provides a means for synchronization
  565.             with the video frame rate of a monitor - or, in the
  566.             case of an interlaced monitor, with the field rate of
  567.             the monitor.
  568.  
  569.           +o _E_X_T__v_i_s_u_a_l__i_n_f_o allows the user to request a particular
  570.             X visual type to be associated with a GLX visual, and
  571.             allows the user to query the X visual type underlying a
  572.             GLX visual. In addition, this extension provides a
  573.             means to request a visual with a transparent pixel and
  574.             to query whether a visual supports a transparent pixel
  575.             value and the value of the transparent pixel.
  576.  
  577.           +o _E_X_T__v_i_s_u_a_l__r_a_t_i_n_g allows servers to identify a
  578.             particular GLX visual as undesirable. This allows
  579.             servers to export visuals with improved features or
  580.             image quality, but lower performance or greater system
  581.             burden, without having to have these visuals selected
  582.             preferentially.
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.                                   - 10 -
  599.  
  600.  
  601.  
  602.        6.3  _N_e_w__F_e_a_t_u_r_e_s__i_n__6_._2
  603.  
  604.        In IRIX 5.3, an OpenGL debugging utility, ogldebug, was
  605.        added.  ogldebug is a development tool that allows you to
  606.        examine OpenGL calls generated by an application. See the
  607.        _o_g_l_d_e_b_u_g reference page for details.
  608.  
  609.        Also, in IRIX 6.2, two new OpenGL utility libraries were
  610.        added: GLC is a subroutine library that provides OpenGL
  611.        programs with character rendering services (consult the
  612.        _g_l_c_i_n_t_r_o reference page for details), GLS is a facility for
  613.        encoding and decoding streams of 8-bit bytes that represent
  614.        sequences of OpenGL commands (consult the _g_l_s_i_n_t_r_o reference
  615.        page for details).
  616.  
  617.        6.4  _C_h_a_n_g_e_s_,__A_d_d_i_t_i_o_n_s__a_n_d__K_n_o_w_n__P_r_o_b_l_e_m_s__i_n__6_._2
  618.  
  619.        IRIX 6.2 includes the OpenGL functionality previously
  620.        provided by IRIX 5.3 with patches 154 and 918, plus support
  621.        for more extensions on all platforms and support for IMPACT
  622.        and InfiniteReality.
  623.  
  624.        Auxbuffers, which were removed in IRIX 5.3, are once again
  625.        supported on RealityEngine, RealityEngine2, VTX, and
  626.        InfiniteReality systems.
  627.  
  628.        Starting in 6.2, all known problems and machine-dependencies
  629.        for OpenGL are documented in the OpenGL man pages.  This
  630.        provides an integrated source of information for development
  631.        and debugging.
  632.  
  633.        6.5  _C_h_a_n_g_e_s_,__A_d_d_i_t_i_o_n_s__a_n_d__K_n_o_w_n__P_r_o_b_l_e_m_s__i_n__5_._3__a_n_d__6_._1
  634.  
  635.        Aux buffers are no longer supported on any platform.  In
  636.        Irix 5.2, RealityEngine, Extreme, and Elan systems had
  637.        OpenGL visuals that supported aux buffers. However, since
  638.        rendering to aux buffers could cause serious data
  639.        corruption, and the problem could not be repaired in time
  640.        for release, support for aux buffers was removed in 5.3 and
  641.        6.1.
  642.  
  643.        The following problems exist in 5.3, 6.1, and earlier
  644.        releases:
  645.  
  646.           +o Textures loaded using glPixelMap might be corrupted
  647.             when enough textures are loaded to cause kernel
  648.             management of texture memory.  Corruption should occur
  649.             only if the glPixelMap has changed or been disabled
  650.             since the original load.
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.                                   - 11 -
  665.  
  666.  
  667.  
  668.           +o Line stippling for antialiased lines is not quite
  669.             correct on Onyx systems.
  670.  
  671.           +o Different OpenGL processes which render to the same
  672.             window using direct rendering will not share the
  673.             software ancillary buffers on that window.
  674.  
  675.           +o X and OpenGL do not coordinate swapping on double-
  676.             buffered windows properly.
  677.  
  678.           +o The GLX specification allows rendering contexts to be
  679.             shared within an address space. This implies that an
  680.             indirect rendering context may be used by different
  681.             clients connected to the same server, and that a direct
  682.             rendering context may be used by different threads
  683.             sharing the address space of a single client. However,
  684.             neither of these are currently supported, and
  685.             attempting either can result in a graphics or system
  686.             hang. If an application requires more than one
  687.             rendering thread then it must create a separate context
  688.             for each thread.
  689.  
  690.           +o If an OpenGL program does a server grab using its X
  691.             connection, then for the duration of the grab it should
  692.             not render OpenGL into any window that the client doing
  693.             the grab did not create.  Otherwise a deadlock occurs.
  694.             The client is still able to do X rendering.  This holds
  695.             for both local and remote rendering.
  696.  
  697.           +o glXCopyContext does not work correctly if the source
  698.             context is not the current context or if the
  699.             destination context has never been made current.
  700.  
  701.           +o On XS/XZ/Elan/Extreme, Indy, XL, Indigo Entry, PI and
  702.             VGX it is not possible to create a texture map with
  703.             borders that is MAX_TEXTURE_SIZE X MAX_TEXTURE_SIZE
  704.             (i.e., 1024 X 1024).  Due to a bug, the maximum texture
  705.             size is 512 X 512 if the texture has borders.  (The
  706.             width (and height) parameters for glTexImage1D (and
  707.             glTexImage2D) would be set to 512 + border).
  708.  
  709.           +o For RealityEngine systems, the _b_o_r_d_e_r texels for the
  710.             glTexImage1D and glTexImage2D calls are ignored.
  711.  
  712.           +o On Personal Iris systems, when calling glXChooseVisual
  713.             to get an OpenGL-capable visual, add the attribute
  714.             "GLX_RED_SIZE 1" to attribList--otherwise you may get
  715.             back an invalid visual. Due to this bug, it is only
  716.             possible to select deep visuals on Personal Iris
  717.             systems.
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.                                   - 12 -
  731.  
  732.  
  733.  
  734.           +o No locking of display list structures is done on behalf
  735.             of indirect OpenGL contexts that share display list
  736.             spaces.  Applications that use such contexts should use
  737.             their own mechanisms to ensure mutual exclusion when
  738.             defining or destroying display lists.
  739.  
  740.           +o When running OpenGL applications that use indirect
  741.             rendering, it is normal for more than one instance of
  742.             _X_s_g_i, the SGI X server, to show up under _p_s.  They
  743.             represent multiple threads of the X server, used to
  744.             implement indirect rendering.
  745.  
  746.           +o You may notice some discrepancies between the OpenGL
  747.             Reference Manual which is available through InSight and
  748.             the man pages you see when you type "man glXxx" in a
  749.             shell window. If so, you should believe what you see in
  750.             the shell window.
  751.  
  752.  
  753.  
  754.  
  755.  
  756.  
  757.  
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.